package com.koron.css2.contractmanage.mapper;

import com.koron.css2.contractmanage.bean.ContractManageBean;
import com.koron.css2.contractmanage.querybean.ContractManageQueryBean;
import com.koron.css2.contractmanage.vo.ContractManageVO;
import com.koron.css2.contractmanage.vo.UserInfoVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Set;

/**
 * 合同管理
 *
 * @author 李文浩
 * @version YH230315
 * @date 2023/4/17 10:03
 */
public interface ContractManageMapper {

    /**
     * 增加合同信息
     *
     * @param bean
     * @return
     */
    public int insertContract(ContractManageBean bean);

    /**
     * 作废用户纸质供水合同
     * @param userNo
     * @return
     */
    public int cancelPaperContract(@Param("userNo") String userNo);

    /**
     * 用户取消绑定合同
     *
     * @param userNo
     * @return
     */
    public int deleteContractByUserNo(@Param("userNo") String userNo);

    /**
     * 查询合同管理列表
     *
     * @param bean
     * @return
     */
    public List<ContractManageVO> getContractManageList(ContractManageQueryBean bean);

    /**
     * 查询报装单合同
     * @return
     */
    public List<ContractManageVO> getContractHistoryList(@Param("userNos") Set<String> userNos);

    /**
     * 根据户号、合同编号查询合同详细信息
     *
     * @param userNo
     * @param contractNo
     * @return
     */
    public ContractManageBean getContractDetail(@Param("userNo") String userNo, @Param("contractNo") String contractNo);

    /**
     * 回填用户信息表中的合同签约日期和合同状态和合同文件地址
     *
     * @param bean
     * @return
     */
    public int updateUserInfo(ContractManageBean bean);

    public int updateCtmUserInfo(ContractManageBean bean);

    /**
     * 回填合同信息
     *
     * @param bean
     * @return
     */
    public int updateContract(ContractManageBean bean);


    /**
     * 通过户号查询用户信息和客户信息
     *
     * @param userNo
     * @return
     */
    public UserInfoVO getUserInfoByUserNo(@Param("userNo") String userNo);

    /**
     *
     * @param userNo
     * @return
     */
    public UserInfoVO getTempUserInfoByUserNo(@Param("userNo") String userNo);

    /**
     * 查询合同表中是否存在该合同编号
     *
     * @param contractNo
     * @return
     */
    public int countContractNo(@Param("contractNo") String contractNo);

    /**
     * 查询是否已有进行中、有效的合同
     *
     * @param userNo
     * @return
     */
    public int countContract(@Param("userNo") String userNo);

    /**
     * 查询报装单是否已有进行中、有效的电子合同
     * @param userNo
     * @return
     */
    public int countEleContract(@Param("userNo") String userNo);


    int countContractTypeEleContract(@Param("userNo")String userNo, @Param("contractTypes")String[] contractTypes,@Param("projectId")String projectId);

    ContractManageVO getContractManage(ContractManageQueryBean contractManageQueryBean);
    ContractManageVO ContractNoInfo(@Param("contractNo") String contractNo);

    List<ContractManageVO> selectContractManageList(ContractManageQueryBean queryBean);

    int deleteTempContractByUserNo(@Param("userNo")String userNo);
}
